支援 Mac App Store
概觀
您可以透過官方 Mac App Store 或外部商店發行您的 macOS 應用程式。但應用程式在發行前應始終簽署。未簽署的應用程式將被 Gatekeeper 拒絕啟動。
本指南將說明如何為 macOS 簽署基於 NW.js 的應用程式。
先備條件
- 透過 iTunesConnect 建立 macOS 應用程式
- 從 Apple Developer 取得應用程式和安裝程式憑證。
- 如果您透過 Mac App Store 發佈應用程式
- 第三方 Mac 開發者應用程式:Foo (XXXXXXXXXX)
- 第三方 Mac 開發者安裝程式:Foo (XXXXXXXXXX)
- 如果您在 商店外 發佈應用程式
- 開發人員 ID 應用程式:Foo (XXXXXXXXXX)
- 開發人員 ID 安裝程式:Foo (XXXXXXXXXX)
- 如果您透過 Mac App Store 發佈應用程式
建置 App
從 nwjs.io 下載 NW.js MAS 組建並依照 封裝和發佈 中的說明組建您的應用程式。
簽署 App
build_mas.py
用於為 macOS 簽署您的應用程式。此指令碼可以在簽署後透過提供 --pkg
參數產生可上傳的 .pkg
檔案以供 Mac App Store 使用。
基本用法
python build_mas.py -C build.cfg -I myapp-dev.app -O MyApp.app
組態檔格式
設定檔 (build.cfg
) 是人類可讀的文字檔。它包含用於簽署和封裝應用程式的許多重要設定。
ApplicationIdentity
和 InstallerIdentity
是用於簽署和封裝應用程式的憑證名稱。請參閱 先備條件 以了解您需要哪些憑證。
NWTeamID
用於建立用於啟動基於 NW.js 的應用程式的 IPC 通道。它可以從 Apple Developer -> 會員資格 -> 團隊 ID 取得。
ParentEntitlements
和 ChildEntitlements
應為有效的 權限檔案。預設情況下,您的應用程式會以最低權限簽署,如下所示。
entitlements-parent.plist
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.security.app-sandbox</key> <true/> <key>com.apple.security.application-groups</key> <string>NWTeamID.your.app.bundle.id</string> </dict> </plist>
entitlements-child.plist
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.security.app-sandbox</key> <true/> <key>com.apple.security.inherit</key> <true/> </dict> </plist>
請閱讀範例 build.cfg
以了解所有欄位的詳細意義。